package com.nuoniu.sibanyun.service.crm.call;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.nuoniu.sibanyun.entity.crm.call.CrmCallTask;
import com.nuoniu.sibanyun.entity.crm.call.dto.AddPhoneDto;
import com.nuoniu.sibanyun.entity.crm.call.dto.CrmCallTaskDto;
import com.nuoniu.sibanyun.entity.crm.call.dto.CrmCallTaskUpdateDto;

import java.util.List;

/**
 * <p>
 * 客户管理-外呼任务管理 服务类
 * </p>
 *
 * @author 白强
 * @since 2022-02-28
 */
public interface ICrmCallTaskService extends IService<CrmCallTask> {

    /**
     * 分页查询 外呼任务
     * @param crmCallTaskDto
     * @return
     */
    Page<CrmCallTask> pageList(CrmCallTaskDto crmCallTaskDto);

    /**
     * 查询详情
     * @param id
     * @return
     */
    CrmCallTask detailById(Long id);

    /**
     * 保存外呼任务
     * @param crmCallTask
     */
    void saveTask(CrmCallTask crmCallTask);

    /**
     * 批量关闭 外呼任务(自己的任务)
     * @param ids
     */
    void closeTask(List<Long> ids);


    /**
     * 批量删除 外呼任务(自己的任务)
     * @param ids
     */
    void batchDelete(List<Long> ids);

    /**
     * 校验 外呼模式 是否使用
     * @param modeId
     * @return
     */
    boolean checkMode(Long modeId);

    /**
     * 更新任务的统计数据
     * @param crmCallTaskUpdateDto
     */
    void updateTaskMobileCount(CrmCallTaskUpdateDto crmCallTaskUpdateDto);

    /**
     * 更新 进度状态(1:未开始 2.进行中 3.已完成 4.未完成 5.滞后完成)
     * @param crmCallTask
     */
    void updateTaskStatus(CrmCallTask crmCallTask);

    /**
     * 系统校验 全盘 表记录 超时的任务，并关闭
     */
    void checkAndUpdateTaskState();

}
